﻿function eliminarFilasMarcadasComoParaBorrar() {
    var filasAEliminar = $(".filaAEliminar");
    filasAEliminar.remove();
}


function quitarMarcasDeBorradoEnFilas() {
    var filasMarcadasParaEliminar = $(".filaAEliminar");
    filasMarcadasParaEliminar.removeAttr("class");
}


function procesarPromesaEliminarMicro(respuestaDelServidor) {
    setearParrafoAdvertencia(respuestaDelServidor.Mensaje);
    //  Si se elimino el micro del servidor entonces debo eliminarla de la tabla
    if (respuestaDelServidor.CantidadDeMicros > 0) {
        eliminarFilasMarcadasComoParaBorrar();
    }
        //  Si no se elimino el micro de la Bd debo quitar las marcas
    else {
        quitarMarcasDeBorradoEnFilas();
    }
}


function armarRequest06(microId) {

    var idMicro = microId;
    var jobject = { request: { Empresa: null, Destino: null, Micro: { id: idMicro } } }
    return JSON.stringify(jobject);
}


function lanzarPromesaEliminarMicro(microId) {

    var request = armarRequest06(microId);
    var urlx = urls.eliminarMicro;
    $.ajax({
        url: urlx,
        cache: false,
        type: "POST",
        contentType: 'application/json; charset=utf-8',
        data: request,
        success: procesarPromesaEliminarMicro
    });
}


//  Evento al presionar boton eliminar
function eliminarMicro(microId, celdaActual) {
    var $this = $(celdaActual);
    var parent = $this.parent().parent();
    parent.attr("class", "filaAEliminar");
    lanzarPromesaEliminarMicro(microId);
}








//  Clona la fila oculta de la tabla y la coloca al final
//  de la tabla haciendola visible
function clonarFilaOculta() {
    var filaNueva = $("#tablaMicrosExistentes tbody tr:eq(0)").clone();
    filaNueva.removeClass("celdasOcultas");
    filaNueva.addClass("celdasConCampos");
    filaNueva.appendTo("#tablaMicrosExistentes tbody");
}

//  Llena las celdas con los nuevos valores
function llenarCeldasConNuevosValores(micro, destino) {
    var celdaCodigoInterno = $("#tablaMicrosExistentes tbody tr:last td:eq(0)");
    celdaCodigoInterno.text(micro.Codigo);

    var celdaDestino = $("#tablaMicrosExistentes tbody tr:last td:eq(1)");
    celdaDestino.text(destino.Nombre);
}

//  Hace visible las celda donde se encuentran los iconos
function hacerVisibleCeldaConIconos() {
    var celdaIconos = $("#tablaMicrosExistentes tbody tr:last td:last");
    celdaIconos.removeAttr("hidden");
}

//  Genera link de cada icono con la respectiva id de la empresa asociada
function generarLinkParaCadaIcono(microDelControlador) {
    var url = urls.editarMicro + "/" + microDelControlador.id;
    var actionEditar = $("#tablaMicrosExistentes tbody tr:last td:eq(2) .linkEditar");
    actionEditar.attr("href", url);

    var funcionParaEliminarMicro = "eliminarMicro(" + microDelControlador.id + ", this)";
    var actionEliminar = $("#tablaMicrosExistentes tbody tr:last td:eq(2) .linkEliminar");
    actionEliminar.attr("onclick", funcionParaEliminarMicro);

}



function mostrarNuevoMicroEntabla(Micro, Destino) {
    //  Clono la fila oculta a una fila nueva
    clonarFilaOculta();

    //  lleno las celdas con los valores
    llenarCeldasConNuevosValores(Micro, Destino);

    //  Quito el hidden para que los iconos sean visibles
    hacerVisibleCeldaConIconos();

    //  Genero los links para cada icono
    generarLinkParaCadaIcono(Micro);
}


function setearParrafoAdvertencia(mensaje) {
    var parrafoAdvertencia = $("#parrafoAdvertencia");
    parrafoAdvertencia.html("&nbsp;");
    parrafoAdvertencia.text(mensaje);

}


function procesarPromesaDarAltaMicro(respuestaDelServidor) {
    setearParrafoAdvertencia(respuestaDelServidor.Mensaje);
    if ((respuestaDelServidor.CantidadDeMicros > 0) && (respuestaDelServidor.CantidadDeDestinos > 0)) {
        mostrarNuevoMicroEntabla(respuestaDelServidor.UnicoMicro, respuestaDelServidor.UnicoDestino);
    }
}


function armarRequest05() {

    var idEmpresa = $("#idEmpresa").val();
    var codigoInterno = $("#codigoInterno").val();
    var idDestino = $("#idDestino").val();

    var jobject = { request: { Empresa: { id: idEmpresa }, Destino: { id: idDestino }, Micro: { Codigo: codigoInterno } } }
    return JSON.stringify(jobject);
}


function lanzarPromesaDarAltaMicro() {

    var request = armarRequest05();
    var urlx = urls.darAltaMicro;

    $.ajax({
        url: urlx,
        cache: false,
        type: "POST",
        contentType: 'application/json; charset=utf-8',
        data: request,
        success: procesarPromesaDarAltaMicro
    });
}


//  Evento al enviar formulario
function darAltaNuevoMicro() {
    setearParrafoAdvertencia("");
    lanzarPromesaDarAltaMicro();
    return false;
}


//  Evento al enviar formulario
$("#formularioAltaMicro").submit(darAltaNuevoMicro);
